package com.castlzl.random.core;

import org.springframework.stereotype.Service;

/**
 * 分布式ID生成器接口
 * 定义了所有ID生成器需要实现的基本方法
 * @author leiziliang
 */
@Service
public interface IdGenerator {
    /**
     * 生成下一个唯一ID
     *
     * @return 生成的唯一ID
     */
    long nextId();

    /**
     * 批量生成唯一ID
     *
     * @param size 需要生成的ID数量
     * @return 生成的唯一ID数组
     */
    default long[] nextIds(int size) {
        if (size <= 0) {
            throw new IllegalArgumentException("Size must be positive");
        }
        long[] ids = new long[size];
        for (int i = 0; i < size; i++) {
            ids[i] = nextId();
        }
        return ids;
    }

    /**
     * 获取生成器的名称
     *
     * @return 生成器名称
     */
    String getName();
}